gint columns;
gint item_width;
+ gint effective_item_width;
gint spacing;
gint row_spacing;
gint column_spacing;
icon_view->priv->columns = -1;
icon_view->priv->item_width = -1;
+ icon_view->priv->effective_item_width = -1;
icon_view->priv->spacing = 0;
icon_view->priv->row_spacing = 6;
icon_view->priv->column_spacing = 6;
{
GdkRectangle cell_area;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_cell_area_activate (icon_view->priv->cell_area,
if (cell != NULL && gtk_cell_renderer_is_activatable (cell))
{
+
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_cell_area_activate (icon_view->priv->cell_area,
MIN (y + height, item->y + item->height) - MAX (y, item->y) <= 0)
return FALSE;
+
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_cell_area_foreach_alloc (icon_view->priv->cell_area,
item->col = col - 1 - item->col;
}
+ /* All items in the same row get the same height */
+ item->height = max_height;
+
/* Adjust the new y coordinate. */
if (item->y + item->height + icon_view->priv->row_spacing > *y)
*y = item->y + item->height + icon_view->priv->row_spacing;
item_width += icon_view->priv->item_padding * 2;
}
+ icon_view->priv->effective_item_width = item_width;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width, -1);
+
icons = icon_view->priv->items;
y += icon_view->priv->margin;
row = 0;
if (gtk_widget_has_focus (widget) && item == icon_view->priv->cursor_item)
flags |= GTK_CELL_RENDERER_FOCUSED;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_cell_area_render (priv->cell_area, priv->cell_area_context,
widget, cr, &cell_area, &cell_area, flags,
draw_focus);
GdkRectangle cell_area;
GtkCellRenderer *cell = NULL;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
{
GdkRectangle cell_area;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_icon_view_set_cell_data (icon_view, item);
gtk_cell_area_get_cell_allocation (icon_view->priv->cell_area,
GetPixbufBoxData data = { { 0, }, FALSE };
GdkRectangle cell_area;
+ gtk_cell_area_context_allocate (icon_view->priv->cell_area_context,
+ icon_view->priv->effective_item_width,
+ item->height);
+
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_cell_area_foreach_alloc (icon_view->priv->cell_area,